;Assembler header file for FileCore
;written by DefMod (Dec 31 2005) on Sat Dec 31 14:01:37 2005
;Jonathan Coxhead, jonathan@doves.demon.co.uk, 21 Aug 1995

        [       :LNOT: :DEF: FileCore_Hdr
        GBLS    FileCore_Hdr

        [       :LNOT: :DEF: Get_Types
        GBLS    Get_Types
        ]
        [       :LNOT: :DEF: Types_Hdr
Get_Types                       SETS    "GET oslib/Types.Hdr"
        |
Get_Types                       SETS    ""
        ]
        $Get_Types

        [       :LNOT: :DEF: Get_OS
        GBLS    Get_OS
        ]
        [       :LNOT: :DEF: OS_Hdr
Get_OS                          SETS    "GET oslib/OS.Hdr"
        |
Get_OS                          SETS    ""
        ]
        $Get_OS

        [       :LNOT: :DEF: Get_FileSwitch
        GBLS    Get_FileSwitch
        ]
        [       :LNOT: :DEF: FileSwitch_Hdr
Get_FileSwitch                  SETS    "GET oslib/FileSwitch.Hdr"
        |
Get_FileSwitch                  SETS    ""
        ]
        $Get_FileSwitch

;Symbols for constants
FileCore_HardDiscsNeedFIQ       *       &1
FileCore_FloppiesNeedFIQ        *       &2
FileCore_AddressBySector        *       &4
FileCore_UseScratchForTemporary *       &8
FileCore_HardDiscsCanMount      *       &10
FileCore_HardDiscsCanPollChange *       &20
FileCore_FloppiesCanEject       *       &40
FileCore_HardDiscsCanEject      *       &80
FileCore_SupportsReadDriveFlags *       &100
FileCore_UseSectorAddressing    *       &200
FileCore_ReturnsNewStyleErrors  *       &400
FileCore_LowSectorSequenceSides *       &40
FileCore_LowSectorDoubleStep    *       &80
FileCore_DiscAddressOffset      *       &1FFFFFFF
FileCore_DiscAddressDrive       *       &E0000000
FileCore_DiscAddressOffsetShift *       0
FileCore_DiscAddressDriveShift  *       29
FileCore_DiscOpGivenAlternativeDefectList *       &10
FileCore_DiscOpGivenSectorList  *       &20
FileCore_DiscOpIgnoreEscape     *       &40
FileCore_DiscOpIgnoreTimeout    *       &80
FileCore_DiscOpAlternativeRecord *       &FFFFFF00
FileCore_DiscOpAlternativeRecordShift *       6
FileCore_CreateFloppyCount      *       &FF
FileCore_CreateFloppyCountShift *       0
FileCore_CreateHardDiscCount    *       &FF00
FileCore_CreateHardDiscCountShift *       8
FileCore_CreateDefaultDrive     *       &FF0000
FileCore_CreateDefaultDriveShift *       16
FileCore_CreateNoDirState       *       &40000000
FileCore_FloppyOldStructure     *       &80
FileCore_FloppyOldMap           *       &100
FileCore_FormatL                *       128
FileCore_FormatD                *       129
FileCore_FormatE                *       130
FileCore_FormatF                *       131
FileCore_PollNotChanged         *       &1
FileCore_PollMayBeChanged       *       &2
FileCore_PollChanged            *       &4
FileCore_PollEmpty              *       &8
FileCore_PollReady              *       &10
FileCore_PollFortyTrack         *       &20
FileCore_PollEmptyWorks         *       &40
FileCore_PollChangedWorks       *       &80
FileCore_PollHighDensity        *       &100
FileCore_PollDensitySenseWorks  *       &200
FileCore_PollReadyWorks         *       &400
FileCore_FeatureNewStyleErrors  *       &1

;Symbols for structure offsets and sizes
                                ^       0
FileCore_Descriptor_flags       #       3*Byte
FileCore_Descriptor_fs_no       #       FileSwitch_FSNo
FileCore_Descriptor_title_offset #       Int
FileCore_Descriptor_boot_text_offset #       Int
FileCore_Descriptor_disc_op_offset #       Int
FileCore_Descriptor_misc_op_offset #       Int
FileCore_Descriptor             *       @

                                ^       0
FileCore_Disc_log2secsize       #       Byte
FileCore_Disc_secspertrack      #       Byte
FileCore_Disc_heads             #       Byte
FileCore_Disc_density           #       Byte
FileCore_Disc_idlen             #       Byte
FileCore_Disc_log2bpmb          #       Byte
FileCore_Disc_skew              #       Byte
FileCore_Disc_bootoption        #       Byte
FileCore_Disc_lowsector         #       Byte
FileCore_Disc_nzones            #       Byte
FileCore_Disc_zone_spare        #       Short
FileCore_Disc_root              #       Int
FileCore_Disc_disc_size         #       Int
FileCore_Disc_disc_id           #       Short
FileCore_Disc_disc_name         #       10*Char
FileCore_Disc_disctype          #       Int
FileCore_Disc_disc_size_hi      #       Int
FileCore_Disc_share_size        #       Byte
FileCore_Disc_big_flag          #       Byte
FileCore_Disc_reserved          #       22*Byte
FileCore_Disc                   *       @

                                ^       0
                                #       Bits
FileCore_DiscAddress            *       @

                                ^       0
                                #       Bits
FileCore_SectorDiscAddress      *       @

                                ^       0
FileCore_DiscAddress64_drive    #       Byte
FileCore_DiscAddress64_reserved #       3*Byte
FileCore_DiscAddress64_offset_low #       Int
FileCore_DiscAddress64_offset_high #       Int
FileCore_DiscAddress64          *       @

                                ^       0
FileCore_Format_sector_size     #       Int
FileCore_Format_gap1_side0      #       Int
FileCore_Format_gap1_side1      #       Int
FileCore_Format_gap3            #       Int
FileCore_Format_secspertrack    #       Byte
FileCore_Format_density         #       Byte
FileCore_Format_options         #       Byte
FileCore_Format_lowsector       #       Byte
FileCore_Format_interleave      #       Byte
FileCore_Format_side_skew       #       Byte
FileCore_Format_track_skew      #       Byte
FileCore_Format_sector_fill     #       Byte
FileCore_Format_track_count     #       Int
FileCore_Format_reserved        #       36*Byte
FileCore_Format                 *       @

                                ^       0
FileCore_TrackFormat_sector_size #       Int
FileCore_TrackFormat_gap1_side0 #       Int
FileCore_TrackFormat_gap1_side1 #       Int
FileCore_TrackFormat_gap3       #       Int
FileCore_TrackFormat_secspertrack #       Byte
FileCore_TrackFormat_density    #       Byte
FileCore_TrackFormat_options    #       Byte
FileCore_TrackFormat_sector_fill #       Byte
FileCore_TrackFormat_track_count #       Int
FileCore_TrackFormat_reserved   #       12*Byte
FileCore_TrackFormat_sectors    #       Bits
FileCore_TrackFormat            *       @
        
        MACRO
$label                          FileCore_TrackFormat_MEMBERS
$label._sector_size             #       Int
$label._gap1_side0              #       Int
$label._gap1_side1              #       Int
$label._gap3                    #       Int
$label._secspertrack            #       Byte
$label._density                 #       Byte
$label._options                 #       Byte
$label._sector_fill             #       Byte
$label._track_count             #       Int
$label._reserved                #       12*Byte
        MEND
        
                                ^       0
FileCore_TrackFormatBase        FileCore_TrackFormat_MEMBERS
FileCore_TrackFormatBase        *       @

                                ^       0
FileCore_DefectList_defect      #       Int
FileCore_DefectList             *       @

                                ^       0
FileCore_Info_flags             #       3*Byte
FileCore_Info_fs_no             #       FileSwitch_FSNo
FileCore_Info_title             #       Ptr
FileCore_Info_boot_text         #       Ptr
FileCore_Info_disc_op           #       Ptr
FileCore_Info_misc_op           #       Ptr
FileCore_Info                   *       @

                                ^       0
                                #       Bits
FileCore_FeatureFlags           *       @


;Symbols for SWI's and SWI reason codes
XFileCore_DiscOp                *       &60540
FileCore_DiscOp                 *       &40540

FileCoreDiscOp_Verify           *       &0
   ;Entry
   ;  R1 = &0 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_DiscAddress)
   ;  R4 = unverified (Int)

FileCoreDiscOp_ReadSectors      *       &1
   ;Entry
   ;  R1 = &1 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_DiscAddress)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)

FileCoreDiscOp_WriteSectors     *       &2
   ;Entry
   ;  R1 = &2 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 -> data (data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_DiscAddress)
   ;  R3 -> next_data (data)
   ;  R4 = unwritten (Int)

FileCoreDiscOp_ReadTrack        *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_ReadId           *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_WriteTrack       *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 -> data (data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_FormatTrack      *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = &0
   ;  R4 -> track_format (FileCore_TrackFormat)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_Seek             *       &5
   ;Entry
   ;  R1 = &5 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_Restore          *       &6
   ;Entry
   ;  R1 = &6 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_StepIn           *       &7
   ;Entry
   ;  R1 = &7 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_StepOut          *       &8
   ;Entry
   ;  R1 = &8 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp_ReadSectorsViaCache *       &9
   ;Entry
   ;  R1 = &9 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R6 = cache_handle (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_DiscAddress)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)
   ;  R6 = cache_handle_out (Int)

FileCoreDiscOp_Specify          *       &F
   ;Entry
   ;  R1 = &F :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R8 = instance (pointer to Void)

XFileCore_Create                *       &60541
FileCore_Create                 *       &40541
   ;Entry
   ;  R0 -> descriptor (FileCore_Descriptor)
   ;  R1 -> module_base (data)
   ;  R2 = word (pointer to data)
   ;  R3 = options (Bits)
   ;  R4 = dir_cache_size (Int)
   ;  R5 = file_cache_buffer_count (Int)
   ;  R6 = map_sizes (Bits)
   ;Exit
   ;  R0 = instance (pointer to Void)
   ;  R1 -> floppy_done (code)
   ;  R2 -> hard_disc_done (code)
   ;  R3 -> release_fiq (code)

XFileCore_Drives                *       &60542
FileCore_Drives                 *       &40542
   ;Entry
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R0 = default_drive (Int)
   ;  R1 = floppy_count (Int)
   ;  R2 = hard_disc_count (Int)

XFileCore_FreeSpace             *       &60543
FileCore_FreeSpace              *       &40543
   ;Entry
   ;  R0 -> disc_name (String)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R0 = free (Int)
   ;  R1 = max (Int)

XFileCore_FloppyStructure       *       &60544
FileCore_FloppyStructure        *       &40544
   ;Entry
   ;  R0 = buffer (pointer to data)
   ;  R1 -> disc (FileCore_Disc)
   ;  R2 = flags (Bits)
   ;  R3 -> defect_list (FileCore_DefectList)
   ;Exit
   ;  R3 = used (Int)

XFileCore_DescribeDisc          *       &60545
FileCore_DescribeDisc           *       &40545
   ;Entry
   ;  R0 -> disc_name (String)
   ;  R1 = disc (pointer to FileCore_Disc)
   ;  R8 = instance (pointer to Void)

XFileCore_DiscardReadSectorsCache *       &60546
FileCore_DiscardReadSectorsCache *       &40546
   ;Entry
   ;  R6 = cache_handle (Int)

XFileCore_DiscFormat            *       &60547
FileCore_DiscFormat             *       &40547
   ;Entry
   ;  R0 = buffer (pointer to FileCore_Format)
   ;  R1 = vet_format_swi (Int)
   ;  R2 = vet_format_handle (Int)
   ;  R3 = format (Int)

XFileCore_LayoutStructure       *       &60548
FileCore_LayoutStructure        *       &40548
   ;Entry
   ;  R0 -> disc (FileCore_Disc)
   ;  R1 -> defect_list (FileCore_DefectList)
   ;  R2 -> disc_name (String)
   ;  R3 = image_file (OS_F)

XFileCore_LayoutStructureW      *       &60548
FileCore_LayoutStructureW       *       &40548
   ;Entry
   ;  R0 -> disc (FileCore_Disc)
   ;  R1 -> defect_list (FileCore_DefectList)
   ;  R2 -> disc_name (String)
   ;  R3 = image_file (OS_FW)

XFileCore_MiscOp                *       &60549
FileCore_MiscOp                 *       &40549

FileCoreMiscOp_Mount            *       &0
   ;Entry
   ;  R0 = &0
   ;  R1 = drive_no (Int)
   ;  R2 = disc_addr (FileCore_DiscAddress)
   ;  R3 = buffer (pointer to data)
   ;  R4 = size (Int)
   ;  R5 = disc (pointer to FileCore_Disc)
   ;  R8 = instance (pointer to Void)

FileCoreMiscOp_PollChanged      *       &1
   ;Entry
   ;  R0 = &1
   ;  R1 = drive_no (Int)
   ;  R2 = sequence_no (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = sequence_no_out (Int)
   ;  R3 = result (Bits)

FileCoreMiscOp_LockDrive        *       &2
   ;Entry
   ;  R0 = &2
   ;  R1 = drive_no (Int)
   ;  R8 = instance (pointer to Void)

FileCoreMiscOp_UnlockDrive      *       &3
   ;Entry
   ;  R0 = &3
   ;  R1 = drive_no (Int)
   ;  R8 = instance (pointer to Void)

FileCoreMiscOp_PollPeriod       *       &4
   ;Entry
   ;  R0 = &4
   ;  R1 -> disc_name (String)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R5 = poll_period (Int)
   ;  R6 -> media_type (String)

FileCoreMiscOp_EjectDisc        *       &5
   ;Entry
   ;  R0 = &5
   ;  R1 = drive_no (Int)
   ;  R8 = instance (pointer to Void)

FileCoreMiscOp_ReadInfo         *       &6
   ;Entry
   ;  R0 = &6
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R0 -> info (FileCore_Info)

FileCoreMiscOp_DriveStatus      *       &7
   ;Entry
   ;  R0 = &7
   ;  R1 = drive_no (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = locked (Bool)

XFileCore_SectorOp              *       &6054A
FileCore_SectorOp               *       &4054A

FileCoreSectorOp_Verify         *       &0
   ;Entry
   ;  R1 = &0 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_SectorDiscAddress)
   ;  R4 = unverified (Int)

FileCoreSectorOp_ReadSectors    *       &1
   ;Entry
   ;  R1 = &1 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)

FileCoreSectorOp_WriteSectors   *       &2
   ;Entry
   ;  R1 = &2 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 -> data (data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_SectorDiscAddress)
   ;  R3 -> next_data (data)
   ;  R4 = unwritten (Int)

FileCoreSectorOp_ReadTrack      *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_ReadId         *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_WriteTrack     *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 -> data (data)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_FormatTrack    *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = &0
   ;  R4 -> track_format (FileCore_TrackFormat)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_Seek           *       &5
   ;Entry
   ;  R1 = &5 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_Restore        *       &6
   ;Entry
   ;  R1 = &6 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_StepIn         *       &7
   ;Entry
   ;  R1 = &7 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_StepOut        *       &8
   ;Entry
   ;  R1 = &8 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreSectorOp_ReadSectorsViaCache *       &9
   ;Entry
   ;  R1 = &9 :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R6 = cache_handle (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (FileCore_SectorDiscAddress)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)
   ;  R6 = cache_handle_out (Int)

FileCoreSectorOp_Specify        *       &F
   ;Entry
   ;  R1 = &F :OR: flags (Bits)
   ;  R2 = disc_addr (FileCore_SectorDiscAddress)
   ;  R8 = instance (pointer to Void)

XFileCore_FreeSpace64           *       &6054B
FileCore_FreeSpace64            *       &4054B
   ;Entry
   ;  R0 -> disc_name (String)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R0 = free_lo (Bits)
   ;  R1 = free_hi (Int)
   ;  R2 = max (Int)

XFileCore_DiscOp64              *       &6054C
FileCore_DiscOp64               *       &4054C

FileCoreDiscOp64_Verify         *       &0
   ;Entry
   ;  R1 = &0 :OR: flags (Bits)
   ;  R2 = disc_addr (pointer to FileCore_DiscAddress64)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (pointer to FileCore_DiscAddress64)
   ;  R4 = unverified (Int)

FileCoreDiscOp64_ReadSectors    *       &1
   ;Entry
   ;  R1 = &1 :OR: flags (Bits)
   ;  R2 = disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)

FileCoreDiscOp64_WriteSectors   *       &2
   ;Entry
   ;  R1 = &2 :OR: flags (Bits)
   ;  R2 = disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 -> data (data)
   ;  R4 = size (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 -> next_data (data)
   ;  R4 = unwritten (Int)

FileCoreDiscOp64_ReadTrack      *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_ReadId         *       &3
   ;Entry
   ;  R1 = &3 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R3 = data (pointer to data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_WriteTrack     *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R3 -> data (data)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_FormatTrack    *       &4
   ;Entry
   ;  R1 = &4 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R3 = &0
   ;  R4 -> track_format (FileCore_TrackFormat)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_Seek           *       &5
   ;Entry
   ;  R1 = &5 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_Restore        *       &6
   ;Entry
   ;  R1 = &6 :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_StepIn         *       &7
   ;Entry
   ;  R1 = &7 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_StepOut        *       &8
   ;Entry
   ;  R1 = &8 :OR: flags (Bits)
   ;  R8 = instance (pointer to Void)

FileCoreDiscOp64_ReadSectorsViaCache *       &9
   ;Entry
   ;  R1 = &9 :OR: flags (Bits)
   ;  R2 = disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 = data (pointer to data)
   ;  R4 = size (Int)
   ;  R6 = cache_handle (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R2 = next_disc_addr (pointer to FileCore_DiscAddress64)
   ;  R3 = next_data (pointer to data)
   ;  R4 = unread (Int)
   ;  R6 = cache_handle_out (Int)

FileCoreDiscOp64_Specify        *       &F
   ;Entry
   ;  R1 = &F :OR: flags (Bits)
   ;  R2 -> disc_addr (FileCore_DiscAddress64)
   ;  R8 = instance (pointer to Void)

XFileCore_Features              *       &6054D
FileCore_Features               *       &4054D
   ;Exit
   ;  R0 = features (FileCore_FeatureFlags)

Service_IdentifyDisc            *       &69
   ;Entry
   ;  R1 = &69
   ;  R2 = format_name (pointer to String)
   ;  R3 = size (Int)
   ;  R5 -> disc (FileCore_Disc)
   ;  R6 = cache_handle (Int)
   ;  R8 = instance (pointer to Void)
   ;Exit
   ;  R1 = unclaimed (Bool)
   ;  R2 = file_type (Bits)
   ;  R6 = cache_handle_out (Int)

        ]
        END
